有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java能否使内部类的方法只能由外部类访问?

假设我有一个外部类和一个内部类。是否可以编写一个内部类方法,这样它只能由外部类访问,而不能由外部类之外定义的类访问,例如MyForeignClass

class MyForeignClass {
    MyForeignClass() {
        MyOuterClass instance = new MyOuterClass();
        MyInnerClass innerClassInstance = instance.getMyInnerClassInstance();
        // illegal method call, only MyOuterClass can call this
        innerClassInstance.privateInnerClassMethod();
    }
}

class MyOuterClass {
    class MyInnerClass {
        MyInnerClass() {}
        void publicInnerClassMethod() {
            // accessible from outside MyOuterClass
        }
        void privateInnerClassMethod() {
            // accessible from inside MyOuterClass
        }
    }

    MyInnerClass instance;

    MyOuterClass() {
        instance = new MyInnerClass();
        instance.privateInnerClassMethod();
    } 

    MyInnerClass getMyInnerClassInstance() {
        return instance;
    }

}

共 (1) 个答案

  1. # 1 楼答案

    如果将内部类的方法设为私有,则只能从内部类和外部类访问它们

    class MyOuterClass
    {
        class MyInnerClass 
        {
            private void doSomething(){}
        }
    }
    

    如果您试图从MyInnerClass或MyOuterClass之外的任何其他类调用上述方法,您将得到一个错误,因为没有其他类知道该方法的实例来自何处。希望这有帮助:)